#ifndef SERVICE_PLAYER_H
#define SERVICE_PLAYER_H

#include <sys/types.h>
#include <stdbool.h>

// 定义临时文件的路径
#define CURRENT_VIDEO_FILE "/tmp/current_video.mp4"
#define NEXT_VIDEO_FILE    "/tmp/next_video.mp4"

// 全局变量，用于跟踪后台下载进程的PID
// 'extern' 关键字表示这个变量的实体在其他 .c 文件中定义
extern pid_t g_background_download_pid;



//定义历史存储量和文件名
#define MAX_HISTORY_SIZE 5 // 我们可以保留最近5个视频的历史记录
#define VIDEO_FILE_TEMPLATE "/tmp/video_%d.mp4" // 文件名模板

//定义播放列表结构体
typedef struct 
{
    char urls[MAX_HISTORY_SIZE][2048];  //存储视频的url
    char files[MAX_HISTORY_SIZE][256];  //存储视频的本地文件名字
    int current_index;    //当前播放的视频下标
    int total_videos;    //当前历史记录有多少视频
    int head_index;     //链表头指针
}Playlist;

extern Playlist playlist;




//创建一个复用性函数初始化和刷新都可用
static void start_new_session(void);


//添加初始视频播放逻辑
void service_play_init();
bool service_player_is_initial_video_ready(void); // 检查初始视频是否已下载完成
void service_player_play_initial_video(void); // 播放已下载好的初始视频，并触发预加载


void preload_next_video();

//重新播放当前索引的视频
void service_player_replay_current(void);

//播放当前收藏夹视频
void service_player_start_favorite_playback(const char* favorite_url);

//判断收藏视频是否就绪
bool service_player_is_favorite_video_ready(void);

//播放收藏视频
void service_player_play_favorite_video(const char* favorite_url);

//播放下一个视频
bool service_play_next();

//播放上一个视频
int service_play_prev();




#endif